var err_warning={
		'empty':'不能为空!',
		'password':'请输入6-20位的字母或数字',
		'mobile':'请输入正确的手机号码',
		'phone':'请输入正确的电话号码',
		'empty_20':'非空且不少于20个字符，请正确输入',
		'email':'邮箱输入错误',
		'url':'url地址必须以http开头',
		'qq':'请输入正确的QQ号码',
		'postcode':'请输入正确的邮政编码',
		'id':'请输入正确的身体证号',
		'ip':'IP地址输入有误',
		'user_name':'用户名必须为3-16位且不含特殊字符',
		'user_id':'用户名必须 为3-16位且以字母开头',
		'chinese':'请输入真实信息',
		'file_img':'图片格式有误，必须为.jpg .gif .jpeg .png .bmp格式',
		'file_doc':'文件格式错误，必须为.txt .doc .pdf .xls格式',
		'file_safe':'文件格式错误，必须为.txt .doc .pdf .xls .jpg .gif .jpeg .png .bmp格式',
		'recheck':'密码不一致，请重新输入!',
		'truename':'请正确填写您的真实姓名！'
}
var tipmsg = {
		'user_name':'3-16位数字或字母',
		'truename':'请输入您的真实姓名！',
		'password':'请输入至少6位的登录密码！',
		'recheck':'请再次输入您的密码！',
		'maincode':'重要凭证，请准确输入！',
		'empty':'此项为必填项',
		'order':'显示顺序，数值越小越靠前',
		'optname':'选项名称，类似选择题中的A\B\C\D',
		'optvalue':'该选项名称对应的数字，用于统计'
}
/*
--------------- 客户端表单通用验证CheckForm(oForm) -----------------
功能:通用验证所有的表单元素.
使用:
<form name="form1" onsubmit="return CheckForm(this)">
<input type="text" name="id" canBeNull="true" check="^\S+$" warning="如果有，id不能为空,且不能含有空格">
<input type="text" name="id" check="^[a-zA-Z][a-zA-Z0-9]{2,15}$" warning="字母开头，允许3-16字节，允许字母数字">
<input type="submit">
</form>
canBeNull="true"属性：可以为空，但如果不为空，就需要验证。慎用。
*/
// 主函数
function checkform(oForm){
	var els = oForm.elements;
	var is_error;
	for(var i=0;i<els.length;i++){//遍历所有表元素
		if(els[i].getAttribute("check")){//是否需要验证
			//多个文本框必须输入一个
			if($(oForm[i]).attr('mustInputOne') != undefined){
				if(mustInputOne()==false){
					return false;
				}
			}
			//if(els[i].getAttribute("mustInputOne")=="true" && els[i].value ==""){
				//continue;
			//}
			//如果有内容，验证之
			if(els[i].getAttribute("canBeNull")=="true" && els[i].value ==""){
				continue;
			}
			//判断一个input的值跟另外一个相等
			else if (els[i].getAttribute('check') == 'equal'){
				equal_to = els[i].getAttribute('equal_to');
				if (els[i].value != $('input[name='+equal_to+']').val()){
					is_error = true;
				}
				else {
					continue;
				}
			}
			//判断input值是否符合规范
			else{
				var sReg = els[i].getAttribute("check");//取得验证字符串
				//alert(sReg);
				switch(sReg){//定义常用验证正则表达式库，继续扩展中。。。
					case "empty":sReg= "\\S";break;//非空
					case "password":sReg="^\\S{6,}";break;//不少于6位的密码
					case "mobile":sReg="^\\d{11}$";break;//电话号码
					case "phone":sReg="^\\d+$";break;//电话号码
					case "select":sReg="^0$";break;//必须选择；用于select和radio
					case "check_1":sReg="^0{1,}$";break;//必须选中至少1项；用于checkbox
					case "check_2":sReg="^0{2,}$";break;//必须选中至少2项；用于checkbox
					case "check_3":sReg="^0{3,}$";break;//必须选中至少3项；用于checkbox
					case "empty_20":sReg="^[\\s|\\S]{20,}$";break;//非空，且不少于20个字
					case "email":sReg="\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";break;//email
					case "http":sReg="^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$";break;//url地址，必须用http开头的url地址http://www.sina.com.cn/
					case "url":sReg="^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*";break;//url地址，必须用http开头的url地址http://www.sina.com.cn/
					case "qq":sReg="[1-9][0-9]{4,}";break;//QQ号
					case "postcode":sReg="[0-9]\\d{5}(?!\\d)";break;//邮政编码
					case "id":sReg="\\w{15}|\\w{18}";break;//身份证，18位或15位
					case "ip":sReg="\\d+\\.\\d+\\.\\d+\\.\\d+";break;//ip地址
					case "user_name":sReg="^[a-zA-Z][a-zA-Z0-9_]{2,15}$";break;//匹配帐号是否合法(字母开头，允许3-16字节，允许字母数字和下划线)
					case "user_id":sReg="^[a-zA-Z][a-zA-Z0-9]{2,15}$";break;//匹配帐号是否合法(字母开头，允许3-16字节，允许字母数字)
					case "truename":sReg="^[一-龥]{2,}";break;//必须是中文且不能少于2位
					case "chinese":sReg="^[一-龥]";break;//必须是中文
					case "file_img":sReg="(.*)(\\.jpg|\\.gif|\\.jpeg|\\.png|\\.bmp)$";break;//图片验证
					case "file_doc":sReg="(.*)(\\.txt|\\.doc|\\.pdf|\\.xls)$";break;//文本验证
					case "file_safe":sReg="(.*)(\\.txt|\\.doc|\\.pdf|\\.xls|\\.jpg|\\.gif|\\.jpeg|\\.png|\\.bmp)$";break;//文本验证
					default:sReg=sReg;break;
				}

				var sVal = GetValue(els[i]);//取得表单的值,用通用取值函数
				var reg = new RegExp(sReg,"i");//字符串->正则表达式,不区分大小写
				if(!reg.test(sVal)){
					is_error = true;
				}
			}

			//验证不通过,提示
			if (is_error){
				$(els).css('background','');
				if($(els[i]).next().attr('id') == 'auth_code_image'){
					$(els[i]).next().after('<span class="warning" style="color:red;position:absolute;line-height:20px;border:1px solid #f33;background:#fee;padding:3px;font-size:12px;" id="warning">'+els[i].getAttribute("warning")+'</span>');
				}else{
					$(els[i]).after('<span class="warning" style="color:red;position:absolute;line-height:20px;border:1px solid #f33;background:#fee;padding:3px;font-size:12px;" id="warning">'+els[i].getAttribute("warning")+'</span>');
				}
				setTimeout(function(){$('#warning').fadeOut(function(){$('#warning').remove();})},4000);
				//该表单元素取得焦点,用通用返回函数
				$(els[i]).css('background','#fee');
				els[i].focus();
				return false;
			}
		}
	}
	return true;
}

//通用取值函数分三类进行取值
//文本输入框,直接取值el.value
//单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个
//单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个
function GetValue(el){
	//取得表单元素的类型
	var sType = el.type;
	switch(sType){
		case "text":
		case "hidden":
		case "password":
		case "file":
		case "textarea": return el.value;
		case "checkbox":
		case "radio": return GetValueChoose(el);
		case "select-one":
		case "select-multiple": return GetValueSel(el);
	}
}

//取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function GetValueChoose(el){
	var sValue = "";
	//取得第一个元素的name,搜索这个元素组
	var tmpels = document.getElementsByName(el.name);
	for(var i=0;i<tmpels.length;i++){
		if(tmpels[i].checked){
			sValue += "0";
		}
	}
	return sValue;
}

//取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function GetValueSel(el){
	var sValue = "";
	for(var i=0;i<el.options.length;i++){
		//单选下拉框提示选项设置为value=""
		if(el.options[i].selected && el.options[i].value!=""){
			sValue += "0";
		}
	}
	return sValue;
}

//通用返回函数,验证没通过返回的效果.分三类进行取值
//文本输入框,光标定位在文本输入框的末尾
//单多选,第一选项取得焦点
//单多下拉菜单,取得焦点
function GoBack(el){
	//取得表单元素的类型
	var sType = el.type;
	switch(sType){
		case "text":
		case "hidden":
		case "password":
		case "file":
		case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
		case "checkbox":
		case "radio": var els = document.getElementsByName(el.name);els[0].focus();
		case "select-one":
		case "select-multiple":el.focus();
	}
}

//必须输入一个文本框内容
function mustInputOne(){
	attr = $(':input[mustInputOne]').eq(0).attr('mustInputOne');
	o = $(':input[mustInputOne='+attr+']');
	_length = o.size();
	tmp = false;
	if(_length > 1){
		o.each(function(i){
			if(o.eq(i).val() != ''){
				o.css('background','');
				tmp = true;
			}
		});
		if(tmp == false){
			$('#warning').remove();
			o.css('background','');
			o.eq(_length-1).after('<span class="warning" style="color:red;position:absolute;line-height:20px;border:1px solid #f33;background:#fee;padding:3px;font-size:12px;" id="warning">输入一项！</span>');
			setTimeout(function(){$('#warning').fadeOut(function(){$('#warning').remove();})},4000);
			o.css('background','#fee');
			o.eq(0).focus();
		}
	}
	return tmp;
}
//基于jquery的密码修改验证
function checkModifyPassword(){
	original_password = $("#old_pwd").val();//旧密码
	new_password = $("#new_pwd").val();//新密码
	confirm_password = $("#re_pwd").val();//密码确认
	if(original_password.length == "" ){
		alert("请输入旧密码！");
		return false;
	}
	if(new_password.length == "" ){
		alert("新密码不能为空！");
		return false;
	}
	if(new_password.length < 6 || new_password.length > 20){
		alert("新密码不能少于6位，20位以内！");
		return false;
	}
	if(new_password != confirm_password){
		alert("新密码和验证密码不一致！");
		return false;
	}
	if(original_password == new_password){
		alert("新旧密码一样的噢，不需要修改！");
		return false;
	}
	return true;
}

/*
 * 基于Jquery的页面自动检测体系
 * @ author:huangzy
 * @ 用法：
 * 	  在页面标签中加入提示字段和校验字段即可。
 *   如：
 *      <input class="text" id="truename" name="" type="text" check='truename' tipmsg="truename"/>
 *      当此标签获取焦点时会提示【tipmsg[truename]】信息
 *      失去焦点时会对此输入信息进行 truename 正则，最后提示相关信息
 */

function autoCheckInput(){
	var els = document.getElementsByTagName('input')
	for(var i=0;i<els.length;i++){//遍历所有表元素
		if(els[i].getAttribute("check")){//是否需要验证
			els[i].onblur = function (){
				var is_error=false;
				var check = this.getAttribute("check");//取得验证字符串
//				if(this.value==''){
//					check = 'empty'
//				}
				if('recheck'==check){
					var comid = this.getAttribute("recheckid");
					var comval = document.getElementById(comid).value
					if(this.value!=comval || this.value=='' || this.value.length<6){
						is_error = true
					}
				}else{
					switch(check){//定义常用验证正则表达式库，继续扩展中。。。
						case "empty":sReg= "\\S";break;//非空
						case "password":sReg="^\\S{6,}";break;//不少于6位的密码
						case "mobile":sReg="^\\d{11}$";break;//电话号码
						case "phone":sReg="^\\d+$";break;//电话号码
						case "select":sReg="^0$";break;//必须选择；用于select和radio
						case "check_1":sReg="^0{1,}$";break;//必须选中至少1项；用于checkbox
						case "check_2":sReg="^0{2,}$";break;//必须选中至少2项；用于checkbox
						case "check_3":sReg="^0{3,}$";break;//必须选中至少3项；用于checkbox
						case "empty_20":sReg="^[\\s|\\S]{20,}$";break;//非空，且不少于20个字
						case "email":sReg="\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";break;//email
						case "http":sReg="^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$";break;//url地址，必须用http开头的url地址http://www.sina.com.cn/
						case "url":sReg="^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*";break;//url地址，必须用http开头的url地址http://www.sina.com.cn/
						case "qq":sReg="[1-9][0-9]{4,}";break;//QQ号
						case "postcode":sReg="[0-9]\\d{5}(?!\\d)";break;//邮政编码
						case "id":sReg="\\w{15}|\\w{18}";break;//身份证，18位或15位
						case "ip":sReg="\\d+\\.\\d+\\.\\d+\\.\\d+";break;//ip地址
						case "user_name":sReg="^[a-zA-Z][a-zA-Z0-9_]{2,15}$";break;//匹配帐号是否合法(字母开头，允许3-16字节，允许字母数字和下划线)
						case 'username':sReg="^\w{4,16}$";break;//匹配用户注册帐号是否为字母、数字、下划线且为4-16个字符
						case "user_id":sReg="^[a-zA-Z][a-zA-Z0-9]{2,15}$";break;//匹配帐号是否合法(字母开头，允许3-16字节，允许字母数字)
						case "truename":sReg="^[一-龥]{2,}";break;//必须是中文且不能少于2位
						case "chinese":sReg="^[一-龥]";break;//必须是中文
						case "file_img":sReg="(.*)(\\.jpg|\\.gif|\\.jpeg|\\.png|\\.bmp)$";break;//图片验证
						case "file_doc":sReg="(.*)(\\.txt|\\.doc|\\.pdf|\\.xls)$";break;//文本验证
						case "file_safe":sReg="(.*)(\\.txt|\\.doc|\\.pdf|\\.xls|\\.jpg|\\.gif|\\.jpeg|\\.png|\\.bmp)$";break;//文本验证
						default:sReg=check;break;
					}
	
					var sVal = this.value;//取得表单的值,用通用取值函数
					var reg = new RegExp(sReg,"i");//字符串->正则表达式,不区分大小写
					if(!reg.test(sVal)){
						is_error = true;
					}
				}
				//验证不通过,提示
				if (is_error){
					T.addtip(this,err_warning[check])
					this.focus();	
					return false;
				}
			}
		}
		if(els[i].getAttribute("tipmsg")){//是否需要验证
			els[i].onfocus = function(){
				var msg = this.getAttribute("tipmsg");//取得验证字符串
				if(this.value==''){
					T.addtip(this,tipmsg[msg])
				}
			}
		}
	}
}

$(document).ready(function() {
	autoCheckInput();//自动校测页面需要校验的信息
});